package com.system.cacheCenterBackend.service.cacheService;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 缓存服务接口，定义CRUD操作
 */
public interface CaffeineCacheService {

    /**
     * 设置缓存值
     *
     * @param key   键
     * @param value 值
     * @return 是否设置成功
     */
    boolean set(String key, String value);

    /**
     * 设置缓存值，带过期时间
     *
     * @param key     键
     * @param value   值
     * @param timeout 过期时间（秒）
     * @return 是否设置成功
     */
    boolean set(String key, String value, long timeout);

    /**
     * 获取缓存值
     *
     * @param key 键
     * @return 值
     */
    String get(String key);

    /**
     * 删除缓存值
     *
     * @param key 键
     * @return 是否删除成功
     */
    boolean delete(String key);

    /**
     * 检查缓存键是否存在
     *
     * @param key 键
     * @return 是否存在
     */
    boolean exists(String key);
    
    /**
     * 获取Hash类型数据
     *
     * @param key 键
     * @return Hash数据
     */
    Map<String, String> getHash(String key);
    
    /**
     * 设置Hash类型数据
     *
     * @param key 键
     * @param value Hash数据
     * @return 是否设置成功
     */
    boolean setHash(String key, Map<String, String> value);
    
    /**
     * 获取List类型数据
     *
     * @param key 键
     * @return List数据
     */
    List<String> getList(String key);
    
    /**
     * 设置List类型数据
     *
     * @param key 键
     * @param value List数据
     * @return 是否设置成功
     */
    boolean setList(String key, List<String> value);
    
    /**
     * 获取Set类型数据
     *
     * @param key 键
     * @return Set数据
     */
    Set<String> getSet(String key);
    
    /**
     * 设置Set类型数据
     *
     * @param key 键
     * @param value Set数据
     * @return 是否设置成功
     */
    boolean setSet(String key, Set<String> value);
    
    /**
     * 获取ZSet类型数据
     *
     * @param key 键
     * @return ZSet数据
     */
    Set<String> getZSet(String key);
    
    /**
     * 设置ZSet类型数据
     *
     * @param key 键
     * @param value ZSet数据
     * @return 是否设置成功
     */
    boolean setZSet(String key, Set<String> value);
}